package com.pingan.internal.point.shopping.common.enums;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import java.util.List;
import java.util.Map;

public enum CityEnum {
    C_1101("市辖区", "1101"),
    C_1102("县", "1102"),
    C_1201("市辖区", "1201"),
    C_1202("县", "1202"),
    C_1301("石家庄市", "1301"),
    C_1302("唐山市", "1302"),
    C_1303("秦皇岛市", "1303"),
    C_1304("邯郸市", "1304"),
    C_1305("邢台市", "1305"),
    C_1306("保定市", "1306"),
    C_1307("张家口市", "1307"),
    C_1308("承德市", "1308"),
    C_1309("沧州市", "1309"),
    C_1310("廊坊市", "1310"),
    C_1311("衡水市", "1311"),
    C_1401("太原市", "1401"),
    C_1402("大同市", "1402"),
    C_1403("阳泉市", "1403"),
    C_1404("长治市", "1404"),
    C_1405("晋城市", "1405"),
    C_1406("朔州市", "1406"),
    C_1407("晋中市", "1407"),
    C_1408("运城市", "1408"),
    C_1409("忻州市", "1409"),
    C_1410("临汾市", "1410"),
    C_1411("吕梁市", "1411"),
    C_1501("呼和浩特市", "1501"),
    C_1502("包头市", "1502"),
    C_1503("乌海市", "1503"),
    C_1504("赤峰市", "1504"),
    C_1505("通辽市", "1505"),
    C_1506("鄂尔多斯市", "1506"),
    C_1507("呼伦贝尔市", "1507"),
    C_1508("巴彦淖尔市", "1508"),
    C_1509("乌兰察布市", "1509"),
    C_1522("兴安盟", "1522"),
    C_1525("锡林郭勒盟", "1525"),
    C_1529("阿拉善盟", "1529"),
    C_2101("沈阳市", "2101"),
    C_2102("大连市", "2102"),
    C_2103("鞍山市", "2103"),
    C_2104("抚顺市", "2104"),
    C_2105("本溪市", "2105"),
    C_2106("丹东市", "2106"),
    C_2107("锦州市", "2107"),
    C_2108("营口市", "2108"),
    C_2109("阜新市", "2109"),
    C_2110("辽阳市", "2110"),
    C_2111("盘锦市", "2111"),
    C_2112("铁岭市", "2112"),
    C_2113("朝阳市", "2113"),
    C_2114("葫芦岛市", "2114"),
    C_2201("长春市", "2201"),
    C_2202("吉林市", "2202"),
    C_2203("四平市", "2203"),
    C_2204("辽源市", "2204"),
    C_2205("通化市", "2205"),
    C_2206("白山市", "2206"),
    C_2207("松原市", "2207"),
    C_2208("白城市", "2208"),
    C_2224("延边朝鲜族自治州", "2224"),
    C_2301("哈尔滨市", "2301"),
    C_2302("齐齐哈尔市", "2302"),
    C_2303("鸡西市", "2303"),
    C_2304("鹤岗市", "2304"),
    C_2305("双鸭山市", "2305"),
    C_2306("大庆市", "2306"),
    C_2307("伊春市", "2307"),
    C_2308("佳木斯市", "2308"),
    C_2309("七台河市", "2309"),
    C_2310("牡丹江市", "2310"),
    C_2311("黑河市", "2311"),
    C_2312("绥化市", "2312"),
    C_2327("大兴安岭地区", "2327"),
    C_3101("市辖区", "3101"),
    C_3102("县", "3102"),
    C_3201("南京市", "3201"),
    C_3202("无锡市", "3202"),
    C_3203("徐州市", "3203"),
    C_3204("常州市", "3204"),
    C_3205("苏州市", "3205"),
    C_3206("南通市", "3206"),
    C_3207("连云港市", "3207"),
    C_3208("淮安市", "3208"),
    C_3209("盐城市", "3209"),
    C_3210("扬州市", "3210"),
    C_3211("镇江市", "3211"),
    C_3212("泰州市", "3212"),
    C_3213("宿迁市", "3213"),
    C_3301("杭州市", "3301"),
    C_3302("宁波市", "3302"),
    C_3303("温州市", "3303"),
    C_3304("嘉兴市", "3304"),
    C_3305("湖州市", "3305"),
    C_3306("绍兴市", "3306"),
    C_3307("金华市", "3307"),
    C_3308("衢州市", "3308"),
    C_3309("舟山市", "3309"),
    C_3310("台州市", "3310"),
    C_3311("丽水市", "3311"),
    C_3401("合肥市", "3401"),
    C_3402("芜湖市", "3402"),
    C_3403("蚌埠市", "3403"),
    C_3404("淮南市", "3404"),
    C_3405("马鞍山市", "3405"),
    C_3406("淮北市", "3406"),
    C_3407("铜陵市", "3407"),
    C_3408("安庆市", "3408"),
    C_3410("黄山市", "3410"),
    C_3411("滁州市", "3411"),
    C_3412("阜阳市", "3412"),
    C_3413("宿州市", "3413"),
    C_3415("六安市", "3415"),
    C_3416("亳州市", "3416"),
    C_3417("池州市", "3417"),
    C_3418("宣城市", "3418"),
    C_3501("福州市", "3501"),
    C_3502("厦门市", "3502"),
    C_3503("莆田市", "3503"),
    C_3504("三明市", "3504"),
    C_3505("泉州市", "3505"),
    C_3506("漳州市", "3506"),
    C_3507("南平市", "3507"),
    C_3508("龙岩市", "3508"),
    C_3509("宁德市", "3509"),
    C_3601("南昌市", "3601"),
    C_3602("景德镇市", "3602"),
    C_3603("萍乡市", "3603"),
    C_3604("九江市", "3604"),
    C_3605("新余市", "3605"),
    C_3606("鹰潭市", "3606"),
    C_3607("赣州市", "3607"),
    C_3608("吉安市", "3608"),
    C_3609("宜春市", "3609"),
    C_3610("抚州市", "3610"),
    C_3611("上饶市", "3611"),
    C_3701("济南市", "3701"),
    C_3702("青岛市", "3702"),
    C_3703("淄博市", "3703"),
    C_3704("枣庄市", "3704"),
    C_3705("东营市", "3705"),
    C_3706("烟台市", "3706"),
    C_3707("潍坊市", "3707"),
    C_3708("济宁市", "3708"),
    C_3709("泰安市", "3709"),
    C_3710("威海市", "3710"),
    C_3711("日照市", "3711"),
    C_3712("莱芜市", "3712"),
    C_3713("临沂市", "3713"),
    C_3714("德州市", "3714"),
    C_3715("聊城市", "3715"),
    C_3716("滨州市", "3716"),
    C_3717("菏泽市", "3717"),
    C_4101("郑州市", "4101"),
    C_4102("开封市", "4102"),
    C_4103("洛阳市", "4103"),
    C_4104("平顶山市", "4104"),
    C_4105("安阳市", "4105"),
    C_4106("鹤壁市", "4106"),
    C_4107("新乡市", "4107"),
    C_4108("焦作市", "4108"),
    C_4109("濮阳市", "4109"),
    C_4110("许昌市", "4110"),
    C_4111("漯河市", "4111"),
    C_4112("三门峡市", "4112"),
    C_4113("南阳市", "4113"),
    C_4114("商丘市", "4114"),
    C_4115("信阳市", "4115"),
    C_4116("周口市", "4116"),
    C_4117("驻马店市", "4117"),
    C_4190("省直辖县级行政区划", "4190"),
    C_4201("武汉市", "4201"),
    C_4202("黄石市", "4202"),
    C_4203("十堰市", "4203"),
    C_4205("宜昌市", "4205"),
    C_4206("襄阳市", "4206"),
    C_4207("鄂州市", "4207"),
    C_4208("荆门市", "4208"),
    C_4209("孝感市", "4209"),
    C_4210("荆州市", "4210"),
    C_4211("黄冈市", "4211"),
    C_4212("咸宁市", "4212"),
    C_4213("随州市", "4213"),
    C_4228("恩施土家族苗族自治州", "4228"),
    C_4290("省直辖县级行政区划", "4290"),
    C_4301("长沙市", "4301"),
    C_4302("株洲市", "4302"),
    C_4303("湘潭市", "4303"),
    C_4304("衡阳市", "4304"),
    C_4305("邵阳市", "4305"),
    C_4306("岳阳市", "4306"),
    C_4307("常德市", "4307"),
    C_4308("张家界市", "4308"),
    C_4309("益阳市", "4309"),
    C_4310("郴州市", "4310"),
    C_4311("永州市", "4311"),
    C_4312("怀化市", "4312"),
    C_4313("娄底市", "4313"),
    C_4331("湘西土家族苗族自治州", "4331"),
    C_4401("广州市", "4401"),
    C_4402("韶关市", "4402"),
    C_4403("深圳市", "4403"),
    C_4404("珠海市", "4404"),
    C_4405("汕头市", "4405"),
    C_4406("佛山市", "4406"),
    C_4407("江门市", "4407"),
    C_4408("湛江市", "4408"),
    C_4409("茂名市", "4409"),
    C_4412("肇庆市", "4412"),
    C_4413("惠州市", "4413"),
    C_4414("梅州市", "4414"),
    C_4415("汕尾市", "4415"),
    C_4416("河源市", "4416"),
    C_4417("阳江市", "4417"),
    C_4418("清远市", "4418"),
    C_4419("东莞市", "4419"),
    C_4420("中山市", "4420"),
    C_4451("潮州市", "4451"),
    C_4452("揭阳市", "4452"),
    C_4453("云浮市", "4453"),
    C_4501("南宁市", "4501"),
    C_4502("柳州市", "4502"),
    C_4503("桂林市", "4503"),
    C_4504("梧州市", "4504"),
    C_4505("北海市", "4505"),
    C_4506("防城港市", "4506"),
    C_4507("钦州市", "4507"),
    C_4508("贵港市", "4508"),
    C_4509("玉林市", "4509"),
    C_4510("百色市", "4510"),
    C_4511("贺州市", "4511"),
    C_4512("河池市", "4512"),
    C_4513("来宾市", "4513"),
    C_4514("崇左市", "4514"),
    C_4601("海口市", "4601"),
    C_4602("三亚市", "4602"),
    C_4603("三沙市", "4603"),
    C_4690("省直辖县级行政区划", "4690"),
    C_5001("市辖区", "5001"),
    C_5002("县", "5002"),
    C_5101("成都市", "5101"),
    C_5103("自贡市", "5103"),
    C_5104("攀枝花市", "5104"),
    C_5105("泸州市", "5105"),
    C_5106("德阳市", "5106"),
    C_5107("绵阳市", "5107"),
    C_5108("广元市", "5108"),
    C_5109("遂宁市", "5109"),
    C_5110("内江市", "5110"),
    C_5111("乐山市", "5111"),
    C_5113("南充市", "5113"),
    C_5114("眉山市", "5114"),
    C_5115("宜宾市", "5115"),
    C_5116("广安市", "5116"),
    C_5117("达州市", "5117"),
    C_5118("雅安市", "5118"),
    C_5119("巴中市", "5119"),
    C_5120("资阳市", "5120"),
    C_5132("阿坝藏族羌族自治州", "5132"),
    C_5133("甘孜藏族自治州", "5133"),
    C_5134("凉山彝族自治州", "5134"),
    C_5201("贵阳市", "5201"),
    C_5202("六盘水市", "5202"),
    C_5203("遵义市", "5203"),
    C_5204("安顺市", "5204"),
    C_5205("毕节市", "5205"),
    C_5206("铜仁市", "5206"),
    C_5223("黔西南布依族苗族自治州", "5223"),
    C_5226("黔东南苗族侗族自治州", "5226"),
    C_5227("黔南布依族苗族自治州", "5227"),
    C_5301("昆明市", "5301"),
    C_5303("曲靖市", "5303"),
    C_5304("玉溪市", "5304"),
    C_5305("保山市", "5305"),
    C_5306("昭通市", "5306"),
    C_5307("丽江市", "5307"),
    C_5308("普洱市", "5308"),
    C_5309("临沧市", "5309"),
    C_5323("楚雄彝族自治州", "5323"),
    C_5325("红河哈尼族彝族自治州", "5325"),
    C_5326("文山壮族苗族自治州", "5326"),
    C_5328("西双版纳傣族自治州", "5328"),
    C_5329("大理白族自治州", "5329"),
    C_5331("德宏傣族景颇族自治州", "5331"),
    C_5333("怒江傈僳族自治州", "5333"),
    C_5334("迪庆藏族自治州", "5334"),
    C_5401("拉萨市", "5401"),
    C_5421("昌都地区", "5421"),
    C_5422("山南地区", "5422"),
    C_5423("日喀则地区", "5423"),
    C_5424("那曲地区", "5424"),
    C_5425("阿里地区", "5425"),
    C_5426("林芝地区", "5426"),
    C_6101("西安市", "6101"),
    C_6102("铜川市", "6102"),
    C_6103("宝鸡市", "6103"),
    C_6104("咸阳市", "6104"),
    C_6105("渭南市", "6105"),
    C_6106("延安市", "6106"),
    C_6107("汉中市", "6107"),
    C_6108("榆林市", "6108"),
    C_6109("安康市", "6109"),
    C_6110("商洛市", "6110"),
    C_6201("兰州市", "6201"),
    C_6202("嘉峪关市", "6202"),
    C_6203("金昌市", "6203"),
    C_6204("白银市", "6204"),
    C_6205("天水市", "6205"),
    C_6206("武威市", "6206"),
    C_6207("张掖市", "6207"),
    C_6208("平凉市", "6208"),
    C_6209("酒泉市", "6209"),
    C_6210("庆阳市", "6210"),
    C_6211("定西市", "6211"),
    C_6212("陇南市", "6212"),
    C_6229("临夏回族自治州", "6229"),
    C_6230("甘南藏族自治州", "6230"),
    C_6301("西宁市", "6301"),
    C_6321("海东地区", "6321"),
    C_6322("海北藏族自治州", "6322"),
    C_6323("黄南藏族自治州", "6323"),
    C_6325("海南藏族自治州", "6325"),
    C_6326("果洛藏族自治州", "6326"),
    C_6327("玉树藏族自治州", "6327"),
    C_6328("海西蒙古族藏族自治州", "6328"),
    C_6401("银川市", "6401"),
    C_6402("石嘴山市", "6402"),
    C_6403("吴忠市", "6403"),
    C_6404("固原市", "6404"),
    C_6405("中卫市", "6405"),
    C_6501("乌鲁木齐市", "6501"),
    C_6502("克拉玛依市", "6502"),
    C_6521("吐鲁番地区", "6521"),
    C_6522("哈密地区", "6522"),
    C_6523("昌吉回族自治州", "6523"),
    C_6527("博尔塔拉蒙古自治州", "6527"),
    C_6528("巴音郭楞蒙古自治州", "6528"),
    C_6529("阿克苏地区", "6529"),
    C_6530("克孜勒苏柯尔克孜自治州", "6530"),
    C_6531("喀什地区", "6531"),
    C_6532("和田地区", "6532"),
    C_6540("伊犁哈萨克自治州", "6540"),
    C_6542("塔城地区", "6542"),
    C_6543("阿勒泰地区", "6543"),
    C_6590("自治区直辖县级行政区划", "6590"),
    ;

    private String name;
    private String code;

    public String getName() {
        return name;
    }
    public String getCode() {
        return code;
    }

    public static List<Code> getCityByProvinceCode(String provinceCode) {
        return city.get(provinceCode);
    }

    CityEnum(String name, String code) {
        this.name = name;
        this.code = code;
    }

    private static final Map<String,List<Code>> city = Maps.newHashMap();

    static{
        for (CityEnum e: CityEnum.values()) {
            Code code = new Code();
            code.setCode(e.getCode());
            code.setName(e.getName());
            String province = e.getCode().substring(0,2);
            List<Code> codeList = city.get(province);
            if(codeList == null){
                codeList = Lists.newArrayList();
                city.put(province,codeList);
            }
            codeList.add(code);
        }

    }
}
